STEP |
Video enabled ? |
ACTION |
IF ERROR |
COMMENT |
---|---|---|---|---|
1 | No | Send checkpoint 33 | 33h chosen because it is very distinctive. See note 1 below. | |
2 | No | Beep the speaker three times: short-long-short. | Short-long-short chosen because it is very distinctive. See note 2 below. | |
3 | No | Send checkpoint 00 | ||
4 | No | Part 1 of CPU test. | If an error, send checkpoint 80 (hex) then halt. | |
5 | No | Send checkpoint 01 | ||
6 | No | Part 2 of CPU test. | If an error, send checkpoint 81 (hex) then halt. | |
7 | No | Send checkpoint 02 | ||
8 | No | See if 8-bit checksum of ROM is 00h. | If not 00h, send checkpoint 82 (hex) then halt. | ROM = Ruud's Diagnostic ROM |
9 | No | Send checkpoint 03 | ||
10 | No | Quote: 'Initialise the 8255 multi-port chip' | ||
11 | No | Quote: 'Make sure that turbo is off and disable memory parity' | ||
12 | No | Send checkpoint 04 | ||
13 | No | Disable NMI interrupts | ||
14 | No | Send checkpoint 05 | ||
15 | No | Enable the extender card (if fitted) | Extender card for IBM 5161. | |
16 | No | Send checkpoint 06 | ||
17 | No | Disable video output from the MDA/CGA card. | ||
18 | No | Send checkpoint 07 | ||
19 | No | Look for MDA or CGA video RAM. | If neither found, or the RAM is discovered faulty, send checkpoint 83 (hex) then halt. |
Video RAM (the unused bit) will be used for the stack and some variables. |
20 | No | Send checkpoint 08 | ||
21 | No | As applicable, initialise the MDA card or CGA card. | ||
22 | No | Send checkpoint 09 | ||
23 | No | Clear the video screen. | ||
24 | No | Send checkpoint 0A | ||
25 | No | Set the correct video mode, and make the cursor invisible. | ||
26 | No | Send checkpoint 0B | ||
27 | No | Clear our variables. | Zero the variables that the diagnostic stores in video RAM. | |
28 | No | Send checkpoint 0C | ||
29 | Yes | On-screen, display the name of the program and the version. | ||
30 | Yes | Send checkpoint 0D | ||
31 | Yes | Display "Testing CPU" | ||
32 | Yes | Part 1 of CPU test. | If an error, send checkpoint 8D (hex) then halt. | |
33 | Yes | Send checkpoint 0E | ||
34 | Yes | Part 2 of CPU test. | If an error, send checkpoint 8E (hex) then halt. | |
35 | Yes | Send checkpoint 0F | ||
36 | Yes | Display "Diagnostic ROM checksum" | ||
37 | Yes | See if 8-bit checksum of ROM is 00h. | If not 00h, send checkpoint 8F (hex) then halt. | |
38 | Yes | Send checkpoint 12 (hex) | ||
39 | Yes | Quote: 'Disable the DMA controller' | ||
40 | Yes | Quote: 'Disable the speakers and enable timer 2' | ||
41 | Yes | Send checkpoint 16 (hex) | ||
42 | Yes | Display "8253 timer channel 0" | ||
43 | Yes | Test 8253 timer channel 0. | If an error, send checkpoint 96 (hex). | |
44 | Yes | Send checkpoint 18 (hex) | ||
45 | Yes | Display "8253 timer channel 1" | ||
46 | Yes | Test 8253 timer channel 1. | If an error, send checkpoint 98 (hex) then halt. | Halt beause with a failing timer 1, there won't be any refresh of motherboard and card RAM. That compromises a later test of that RAM. |
47 | Yes | Send checkpoint 1A | ||
48 | Yes | Display "8253 timer channel 2" | ||
49 | Yes | Test 8253 timer channel 2. | If an error, send checkpoint 9A. | |
50 | Yes | Send checkpoint 1C | ||
51 | Yes | Display "8237A DMA controller" | ||
52 | Yes | Test the 8237A DMA controller. | If an error, send checkpoint 9C then halt. | |
53 | Yes | Send checkpoint 24 (hex) | ||
54 | Yes | Configure the 8237 DMA controller | Includes preparing for RAM refresh by appropriately configuring channel 0. | |
55 | Yes | Send checkpoint 25 (hex) | ||
56 | Yes | Display "Hot timer 1 check" | ||
57 | Yes | Look for a 'hot timer 1'. | If error, send checkpoint A5. | The DREQ0 pin on the 8237A DMA controller is expected to be LOW. |
58 | Yes | Send checkpoint 26 (hex) | ||
59 | Yes | Initialise channel 1 on the 8253 timer chip. | One pulse per approximately 15 µs. See here. | |
60 | Yes | Send checkpoint 27 (hex) | ||
61 | Yes | Display "8255 parity check" | ||
62 | Yes | Parity error? | If a parity error, send checkpoint A7. | At this time, the 8255 chip should not be signaling that a parity error was detected. |
63 | Yes | Send checkpoint 2A | ||
64 | Yes | Display "Check first 2 KB of RAM" | ||
65 | Yes | Check the first 2 KB of RAM. | If an error, send checkpoint AA then put error details on-screen, then halt the CPU. | |
66 | Yes | Send checkpoint 32 (hex) | ||
67 | Yes | Display "Found RAM:" | See how much Conventional memory can be found. Strickly speaking, what this diagnostic reports is the top address of RAM. For example, in the misconfiguration shown at here, the diagnostic will report 640 KB. Same if a RAM card goes faulty in a way that creates a gap between motherboard RAM and card RAM. |
|
68 | Yes | See how much RAM can be found. | ||
69 | Yes | Send checkpoint 34 (hex) | ||
70 | Yes | Display the amount of RAM found. | ||
71 | Yes | Send checkpoint 35 (hex) | ||
72 | Yes | Display "Testing RAM - Data" | ||
73 | Yes | Do a data test of the found RAM. | If an error, send checkpoint B5 then put error details on-screen, then halt the CPU. | |
74 | Yes | Send checkpoint 37 (hex) | ||
75 | Yes | Display "Testing RAM - Address" | ||
76 | Yes | Do an adddress test of the found RAM. | If an error, send checkpoint B7 then put error details on-screen, then halt the CPU. | |
77 | Yes | Send checkpoint 39 (hex) | ||
78 | Yes | Display "Testing RAM - Refresh" | ||
79 | Yes | Do a test of RAM refresh. | If an error, send checkpoint B9 then put error details on-screen, then halt the CPU. | 10 second delay between test write then read-back. |
80 | Yes | Send checkpoint 3E (hex) | ||
81 | Yes | Display "8259 interrupt controller" | ||
82 | Yes | Test the 8259 interrupt controller. | If an error, send checkpoint BE. | |
83 | Yes | Send checkpoint 40 (hex) | ||
84 | Yes | Display "Looking for bad interrupts". | ||
85 | Yes | Check if the 8259 sees an interrupt when one is unexpected. | If an interrupt, send checkpoint C0. | |
86 | Yes | Send checkpoint 42 (hex) | ||
87 | Yes | Display "Checking INT 0". | ||
88 | Yes | Test INT 0. | If an error, send checkpoint C2. | |
89 | Yes | Send checkpoint 46 (hex) | ||
90 | Yes | Display "Checking NMI". | ||
91 | Yes | Test the NMI. | If an error, send checkpoint C6. | |
92 | Yes | Send checkpoint 4C (hex) | ||
93 | Yes | Display "Checking 8087 coprocessor". | ||
94 | Yes | Initialise the 8087. | If an error, send checkpoint CC. | Will fail if an 8087 is not fitted. |
95 | Yes | Send checkpoint 4E (hex) | ||
96 | Yes | Display "Check keyboard controller". | ||
97 | Yes | Check keyboard controller. | If an error, send checkpoint CE. | |
98 | Yes | Send checkpoint 50 (hex) | ||
99 | Yes | Display "Check keyboard scan lines". | ||
100 | Yes | Check keyboard scan lines. | If an error, send checkpoint D0. | |
101 | Yes | Send checkpoint 52 (hex) | ||
102 | Yes | Display "Check floppy controller". | ||
103 | Yes | Check floppy controller. | If an error, send checkpoint D2. | |
104 | Yes | Send checkpoint 54 (hex) | ||
105 | Yes | Display "Trying to read a floppy". | ||
106 | Yes | Try to read a floppy. | If an error, send checkpoint D4. | |
107 | Yes | Send checkpoint 60 (hex) | ||
108 | Yes | Display "Check ROM at F4000". | ||
109 | Yes | Check 8 KB ROM at F4000. | Expecting 8-bit checksum to be 00. | |
110 | Yes | Send checkpoint 61 (hex) | ||
111 | Yes | Display "Check ROM at F6000". | ||
112 | Yes | Check 8 KB ROM at F6000. | Expecting 8-bit checksum to be 00. | |
113 | Yes | Send checkpoint 62 (hex) | ||
114 | Yes | Display "Check ROM at F8000". | ||
115 | Yes | Check 8 KB ROM at F8000. | Expecting 8-bit checksum to be 00. | |
116 | Yes | Send checkpoint 63 (hex) | ||
117 | Yes | Display "Check ROM at FA000". | ||
118 | Yes | Check 8 KB ROM at FA000. | Expecting 8-bit checksum to be 00. | |
119 | Yes | Send checkpoint 64 (hex) | ||
120 | Yes | Display "Check ROM at FA000". | ||
121 | Yes | Check 8 KB ROM at FA000. | Expecting 8-bit checksum to be 00. | |
122 | Yes | Send checkpoint 6A (hex) | ||
123 | Yes | Display the switch setting | ||
124 | Yes | Send checkpoint 72 (hex) | ||
125 | Yes | Update the 'Completed passes' figure | ||
126 | Yes | Send checkpoint 74 (hex) |
Note 1 | Possible problems in using 00 instead could be: • 00 might be the default power-on display of some parallel/LPT monitoring devices. • Some parallel/LPT monitoring devices may register a 00 (and other bytes) at power-on time. |
Note 2 | Yes, we are taking the chance that the circuitry involved in beeping the speaker is working. No beeps might be because: • No speaker connected to motherboard. • Diagnostic ROM not created properly. • Diagnostic ROM has started to execute, but circuitry involved in beeping the speaker is faulty. |